Lab 2 -- Structural VHDL

Part 1

Цел

Усвояване на техники за разработка на структурни VHDL модели.


Задание


Да се разработи и верифицира структурен VHDL модел на двубитов суматор.

Входните операнди на суматора са двубитовите числа A и B и входен пренос CIN (фигура 1 ). Резултатът е двубитова сума S и изходен пренос COUT.

Структурният модел на двубитовия суматор де бъде изграден от два еднобитови суматора. 

 

Задача 1. Data-flow модел на еднобитов суматор

Да се разработи модел на еднобитов суматор (фигура 1) като се използва поведенческо описание тип Data-flow (виж указанието в края на задачата). Името на модела трябва да бъде ADDER1, а имената на портовете - както е указано на схемата. 

 

Фигура 1-- Принципна схема на пълен суматор

 

Закъсненията на елементите са както следва: XOR - 5ns, AND - 5ns, OR - 7ns. 

Докажете корекността на разработения модел посредством VHDL симулация.

Data-flow стил

Стилът Data-flow е разновидност на поведенческото описание при която се използват конкурентни оператори за присвояване вместо оператори process.

По-долу е дадена схема и съответното й data-flow описание на D-тригер.

<да се допише>

 

Задача 2 -- Структурен модел на двубитов суматор

Блоковата схема на двубитов суматор е показана на фигура 2.  

На фигура 3 е дадено описание на сигналите и част от таблицата на истинност. Сигналите A0 и A1 представляват съответно младшия и старшия бит на числото A. По аналогичен начин са означени и битове на числата B и S.

Структурния VHDL модел на суматора е даден на фигура 4 и във файла adder2.vhd .

 

Фигура  2 -- Блокова схема на двубитов суматор

 

Операнд А Операнд B Входен пренос Сума S Изходен пренос
старши бит младши бит старши бит младши бит   старши бит младши бит  

A1

A0

B1

B0

CIN

S1

S0

COUT

0

0

0

0

0

0

0

0

0

0

0

0

1

0

1

0

...

             

1

1

1

1

1

1

1

1

               

Фигура  3 -- Описание на сигналите и частична таблица на истинност на двубитов суматор

 


library IEEE;
use IEEE.std_logic_1164.all;
entity ADDER2 is
   port (A0, B0, A1, B1, CIN : in std_logic; S0, S1, COUT : out std_logic);
end ADDER2;
architecture STRUCTURAL of ADDER2 is
   component ADDER1
      port (X, Y, CIN: in std_logic; SUM, COUT: out std_logic);
   end component;
   signal C1: std_logic;
begin
   U1: ADDER1 port map (X=>A0, Y=>B0, CIN=>CIN, SUM=>S0, COUT=>C1);
   U2: ADDER1 port map (X=>A1, Y=>B1, CIN=>C1, SUM=>S1, COUT=>COUT);
end STRUCTURAL;
 

Фигура 4 -- Структурен VHDL модел на двубитов суматор.

 

Тестовата установка за симулация на модела е дадена на фигура 5 и в addertst.vhd.

Добавете към тестовата установка още въздействия, които да изчерпят всички възможни комбинации от входни данни на суматора.

Симулирайте двубитовия суматор и проверете коректността му. Определете бързодействието на суматора.


library IEEE;
use IEEE.std_logic_1164.all;
entity ADDER2_TEST is
end ADDER2_TEST;
architecture TESTER of ADDER2_TEST is
   component TESTED_MODEL
      port (A0, B0, A1, B1, CIN: in std_logic; S0, S1, COUT: out std_logic);
   end component;
   signal A0, B0, A1, B1, CIN, S0, S1, COUT: std_logic;
begin
   UUT: TESTED_MODEL port map 
      (A0=>A0, B0=>B0, A1=>A1, B1=>B1, CIN=>CIN, S0=>S0, S1=>S1, COUT=>COUT);
   STM: process begin
      A0 <='0'; A1 <='0'; B0 <='0'; B1 <='0'; CIN <='0';
      wait for 100 ns;
      A0 <='0'; A1 <='0'; B0 <='0'; B1 <='0'; CIN <='1';
      wait for 100 ns;
      A0 <='0'; A1 <='0'; B0 <='0'; B1 <='1'; CIN <='0';
      wait for 100 ns;
      A0 <='1'; A1 <='1'; B0 <='1'; B1 <='1'; CIN <='1';
      wait for 100 ns;
   end process STM;
end TESTER;

Фигура 5 -- Тестова установка за двубитов суматор.

 

Задача 3 -- Структурен модел на брояч

 Да се проектира структурен VHDL модел ма четирибитов двоичен реверсивен брояч (фигура 6). 

Фигура 6 -- Символ на брояч

Типът и функциите на входните и изходните сигнали са следните: 

Сигнал Описание
Q0 - Q3  Изходи. Показват състоянието на брояча и се изменят от 0000 до 1111
CLOCK  Вход за тактов сигнал. Превключ-ването на брояча става по нарастващия фронт
RESET Вход за нулиране. При високо ниво на този вход броячът преминава в състояание 0000 синхронно с тактовия сигнал
UP/DOWN Вход за управление на режима. При високо ниво на този вход броячът е в режим на събиране, а при ниско - в режим на изваждане
CIN Входен пренос. Броячът променя състоянието си само когато на този вход е подадено високо ниво
COUT Изходен пренос. Когато броячът преминава от състояние 1111 в състояние 0000 (режим на събиране) или от 0000 в 1111 (режим на изваждане) на този изход се установява 1 в продължение на един период на тактовия сигнал. CIN и COUT се използват за каскадно свързване на няколко брояча
 

В структурния модел  на брояча да се използват компоненти от следната библиотека (lib1.vhd):

Име на компонента Описание Портове
LIBXOR XOR A, B: in std_logic; Y: out std_logic
LIBDFF D-тригер, управляван по фронт D, CK: in std_logic; Q, QZ: out std_logic)
LIBINV инвертор A: in std_logic; Y: out std_logic
LIBMUX21 мултиплексор 2 x 1 A, B, S: in std_logic; Y: out std_logic
LIBAN2 AND A, B: in std_logic; Y: out std_logic
 

Да се проектира тестова установка и чрез симулация да се докаже работоспособността на схемата.

 

--- Край на Lab2 ---